﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace BLevy.UI
{
    public partial class frmSociosSelector : Form
    {
        public int socio_id { get; set; }
        public frmSociosSelector()
        {
            InitializeComponent();
        }

        private void IniciarControles()
        {
            txtNroSocio.Text = string.Empty;
            txtDocumento.Text = string.Empty;
            txtApellido.Text = string.Empty;

            dgvSocios.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
        }

        private void frmSociosSelector_Load(object sender, EventArgs e)
        {
            IniciarControles();
            GetSocios();
        }

        private void GetSocios()
        {
            try
            {
                var query = (from row in Negocio.Socios.FindAllConLocalidadZonaPlan()
                             select new
                             {
                                 row.id,
                                 row.numero_certificado,
                                 fecha_ingreso = row.fecha_ingreso.ToShortDateString(),
                                 row.documento,
                                 row.apellido,
                                 row.nombres,
                             }).ToList();

                dgvSocios.Rows.Clear();
                foreach (var fila in query)
                {
                    dgvSocios.Rows.Add(fila.id, fila.numero_certificado, fila.fecha_ingreso, fila.documento, fila.apellido, fila.nombres);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void FiltrarForm(string socio_id, string documento, string apellido)
        {
            try
            {
                var query = (from row in Negocio.Socios.FindAllConLocalidadZonaPlan()
                             where ((row.id == Convert.ToInt32("0" + socio_id)) || (socio_id.Equals(string.Empty))) &&
                             ((row.documento.Contains(documento)) || (documento.Equals(string.Empty))) &&
                             ((row.apellido.Contains(apellido)) || (apellido.Equals(string.Empty)))

                             select new
                             {
                                 row.id,
                                 row.numero_certificado,
                                 fecha_ingreso = row.fecha_ingreso.ToShortDateString(),
                                 row.documento,
                                 row.apellido,
                                 row.nombres,
                             }).ToList();

                dgvSocios.Rows.Clear();
                foreach (var fila in query)
                {
                    dgvSocios.Rows.Add(fila.id, fila.numero_certificado, fila.fecha_ingreso, fila.documento, fila.apellido, fila.nombres);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
            FiltrarForm(txtNroSocio.Text, txtDocumento.Text, txtApellido.Text);
        }

        private void txtNroSocio_TextChanged(object sender, EventArgs e)
        {
            FiltrarForm(txtNroSocio.Text, txtDocumento.Text, txtApellido.Text);
        }

        private void txtDocumento_TextChanged(object sender, EventArgs e)
        {
            FiltrarForm(txtNroSocio.Text, txtDocumento.Text, txtApellido.Text);
        }

        private void txtApellido_TextChanged(object sender, EventArgs e)
        {
            FiltrarForm(txtNroSocio.Text, txtDocumento.Text, txtApellido.Text);
        }

        private void btnSalir_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void txtNroSocio_KeyPress(object sender, KeyPressEventArgs e)
        {
            error.Clear();
            if (!(char.IsNumber(e.KeyChar)) && (e.KeyChar != (char)Keys.Back))
            {
                error.SetError(txtNroSocio, "Solo se permiten números en el campo Nro. Socio.");
                e.Handled = true;
                return;
            }
        }

        private void txtDocumento_KeyPress(object sender, KeyPressEventArgs e)
        {
            error.Clear();
            if (!(char.IsNumber(e.KeyChar)) && (e.KeyChar != (char)Keys.Back))
            {
                error.SetError(txtDocumento, "Solo se permiten números en el campo Documento.");
                e.Handled = true;
                return;
            }
        }

        private void btnSeleccionar_Click(object sender, EventArgs e)
        {
            if (dgvSocios.SelectedRows.Count > 0)
            {
                if (dgvSocios.CurrentRow.Index > -1)
                {
                    socio_id = Convert.ToInt32(dgvSocios.CurrentRow.Cells[0].Value);
                }
            }
        }

        protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData)
        {
            //
            // Si el control DataGridView no tiene el foco, 
            // se abandonamos el procedimiento, llamando al metodo base
            //

            if ((!dgvSocios.Focused))
                return base.ProcessCmdKey(ref msg, keyData);

            //
            // Si la tecla presionada es distinta al ENTER, 
            // se abandonamos el procedimiento, llamando al metodo base
            //
            if (keyData != Keys.Enter)
                return base.ProcessCmdKey(ref msg, keyData);
            //
            // Obtenemos la fila actual 
            //
            if (dgvSocios.SelectedRows.Count > 0)
            {
                if (dgvSocios.CurrentRow.Index > -1)
                {
                    DataGridViewRow row = dgvSocios.CurrentRow;
                    socio_id = Convert.ToInt32(dgvSocios.CurrentRow.Cells[0].Value);
                    this.DialogResult = System.Windows.Forms.DialogResult.OK;
                }
            }

            return true;
        }


    }
}
